const baseUrl = 'http://localhost:5008'; // 代理接口基础地址

function request(options) {
	const {
		url,
		method = 'POST',
		header = {},
		data = {},
	} = options;

	if (options.url !== "/api/user/login") {
		const token = uni.getStorageSync('token'); // 获取存储的 token
		header['Authorization'] = token;
	}

	return new Promise((resolve, reject) => {
		uni.request({
			url: baseUrl + url,
			method,
			header,
			data,

			// 成功得到响应的回调函数（不论服务器是否返回错误）
			success: (res) => {
				if (res.statusCode === 200) {
					resolve(res.data); // 请求成功，返回数据
				} else if (res.statusCode === 401) {
					// token 失效
					uni.removeStorageSync('userInfo');
					uni.removeStorageSync('token');
					uni.showToast({
						title: "登录过期，请重新登录",
						icon: "error",
						duration: 2000
					});
					uni.navigateTo({
						url: '/pages/login/login'
					});
					resolve(res); // 不能 reject，否则 api 中的 catch 块会无限调用
				} else {
					reject(res); // 请求失败，返回错误信息
				}
			},

			// 未能得到服务器响应的回调函数
			fail: (error) => {
				reject(error); // 请求失败，返回错误信息
			},
		});
	});
}

export default request;